/**
 * 
 */
package Proj1;

import java.util.ArrayList;

/**
 * Turma da escola
 * @author Leonardo e Mikaelle
 * 
 */
public class Turma {
	/**
	 * Nome da turma
	 */
	private String nome;
	/**
	 * Nome do professor responsavel pela turma
	 */
	private Professor professor;
	/**
	 * Lista dos alunos pertencentes a turma
	 */
	private ArrayList<Aluno> alunos;

	/**
	 * Pega o nome da turma
	 * 
	 * @return nome
	 */
	public String getNome() {
		return nome;
	}

	/**
	 * Altera o nome da turma
	 * 
	 * @param nome
	 *            Nome da turma
	 * @return true Se o nome da turma for alterado com sucesso caso contrario
	 *         retorna false.
	 */
	public boolean setNome(String nome) {
		if (nome != null) {
			this.nome = nome;
			return true;
		} else
			return false;
	}

	/**
	 * Pega o nome do professor responsavel pela turma
	 * 
	 * @return professor
	 */
	public Professor getProfessor() {
		return professor;
	}

	/**
	 * Altera o nome do professor responsavel pela turma
	 * 
	 * @param professor
	 *            Professor responsavel
	 * @return true Se o professor for alterado com sucesso caso contrario
	 *         retorna false.
	 */
	public boolean setProfessor(Professor professor) {
		if (professor != null) {
			this.professor = professor;
			return true;
		} else
			return false;
	}

	/**
	 * Pega a lista de alunos matriculados na turma
	 * 
	 * @return alunos
	 */
	public ArrayList<Aluno> getAlunos() {
		return alunos;
	}

	/**
	 * Altera a lista de alunos matriculados na turma
	 * 
	 * @param alunos
	 *            Lista de alunos
	 * @return true Se a lista for alterada com sucesso caso contrario retorna
	 *         false.
	 */
	public boolean setAlunos(ArrayList<Aluno> alunos) {
		if (alunos != null) {
			this.alunos = alunos;
			return true;
		} else
			return false;
	}

	/**
	 * Metodo para adicionar um novo aluno a turma
	 * 
	 * @param aluno
	 *            Objeto alunos
	 * @return true Se o aluno for valido ele sera adicionado a turma caso
	 *         contrario retorns false.
	 */
	public boolean addAluno(Aluno aluno) {
		if (aluno != null && alunos.size() <= 25) {
			alunos.add(aluno);
			return true;
		} else
			return false;
	}

	/**
	 * Metodo para pesquisar um aluno na turma
	 * 
	 * @param aluno
	 *            Objeto aluno
	 * @return true Se o aluno for encontrado caso contrario retorna false.
	 */
	public Aluno procAluno(Aluno aluno) {
		Aluno res = null;
		for (Aluno alu : alunos) {
			if (alu.getMatricula().equalsIgnoreCase(aluno.getMatricula()))
				res = alu;
		}
		return res;
	}
/**
 * Metodo para procurar um aluno na turma passada sua matricula
 * @param matricula Matricula do aluno
 * @return res
 */
	public Aluno procAluno(String matricula) {
		Aluno res = null;
		for (Aluno alu : alunos) {
			if (alu.getMatricula().equalsIgnoreCase(matricula))
				res = alu;
		}
		return res;
	}

	/**
	 * Remove um aluno da turma passada uma matricula
	 * 
	 * @param matricula
	 *            Matricula do aluno
	 * @return true Se a matricula for valida caso contrario retorna false.
	 */
	public boolean removeAluno(String matricula) {
		boolean achou = false;
		if (matricula != null) {
			for (Aluno alu : alunos)
				if (alu.getMatricula().equalsIgnoreCase(matricula))
					achou = alunos.remove(alu);
		}
		return achou;
	}
/**
 * Remove um aluno pelo objeto
 * @param aluno Objeto aluno
 * @return true
 */
	public boolean removeAluno(Aluno aluno) {
		boolean achou = false;
		if (aluno != null) {
			for (Aluno alu : alunos)
				if (alu.getMatricula().equalsIgnoreCase(aluno.getMatricula()))
					achou = alunos.remove(alu);
		}
		return achou;
	}

	/**
	 * Construutor default da classe turma.
	 */
	public Turma() {
		super();
		this.alunos = new ArrayList<Aluno>();
	}

	/**
	 * Construtor explicito da classe turma
	 */
	public Turma(String nome, Professor professor) {
		super();
		this.nome = nome;
		this.professor = professor;
		this.alunos = new ArrayList<Aluno>();
	}

}
